package arrayRankTransform;

import java.util.*;

public class Solution {
    public int[] arrayRankTransform(int[] arr) {
        // 方法一 遍历 每次都假设arr[i]是最小的元素 即index为1 如果arr[i]
        // 如果找到一个元素小于arr[i] 则index++;
//        int[] ans = new int[arr.length];
//        Set<Integer> set = new HashSet<>();
//        for (int i = 0; i < arr.length; i++) {
//            set.add(arr[i]);
//        }
//        for (int i = 0; i < arr.length; i++) {
//            int index = 1;
//            for (int v: set) {
//                if(v<arr[i]){
//                    index++;
//                }
//            }
//            ans[i] = index;
//        }
//        return ans;

        Map<Integer,Integer> map = new HashMap<>(); // 存放每个值排序之后对应的索引
        int []ans = new int[arr.length];
        for (int i = 0; i < ans.length; i++) {
            ans[i] = arr[i];
        }
        Arrays.sort(arr);
        int index = 1;
        for (int i = 0; i < arr.length; i++) {
            if(!map.containsKey(arr[i])){
                map.put(arr[i],index);
                index++;
            }
        }
        for (int i = 0; i < ans.length; i++) {
            ans[i] = map.get(ans[i]);
        }
        return ans;
    }
}
